package com.candy.dao;

import com.candy.pojo.StudentInfo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface StudentInfoMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(StudentInfo record);

    int insertSelective(StudentInfo record);

    StudentInfo selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(StudentInfo record);

    int updateByPrimaryKey(StudentInfo record);
    /**
     * 查询所有的学生信息
     */
    List<StudentInfo> selectAllStudents();
    /**
     * 动态SQL:查询符合条件的学生信息 if标签的使用
     */
    List<StudentInfo> selectStudentInfo(StudentInfo studentInfo);
    /**
     * 动态SQL:查询符合条件的学生信息
     * choose when otherwise标签的使用,
     */
    List<StudentInfo> selectStudentInfo2(StudentInfo studentInfo);

    /**
     * 动态SQL：使用foreach标签实现参数遍历查询
     * @param ids：需要传递的id值
     * @return id包含在ids中的学生信息
     */
    List<StudentInfo> selectByIds(List<Integer> ids);

    /**
     * Mybatis实现模糊查询
     * @param studentInfo：需要传递的学生实体类参数
     * @return 符合条件的学生信息
     */
    List<StudentInfo> selectStudentByLike(StudentInfo studentInfo);


    /**
     * mybatis多参数传递处理
     * @param stuname：学生姓名
     * @param stuaddress：学生住址
     * @return：符合查询条件的学生信息
     */
    List<StudentInfo> selectStudentByParams(String stuname, String stuaddress);
    /**
     * mybatis使用注解方式处理多参数
     * @param stuname：学生姓名
     * @param stuaddress：学生住址
     * @return：符合查询条件的学生信息
     */
    List<StudentInfo> selectStudentByParams2(@Param("stuname") String stuname, @Param("stuaddress") String stuaddress);

    /**
     * Mybatis使用注解方式处理多参数问题
     * @param studentInfo：学生的实体类
     * @param isDESC：是否进行排序
     * @return
     */
    List<StudentInfo> selectStudentByParams3(@Param("student") StudentInfo studentInfo, @Param("isDESC") boolean isDESC);

}